home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 16
/
Aminet 16 (1996)(GTI - Schatztruhe)[!][Dec 1996].iso
/
Aminet
/
misc
/
emu
/
QDOS2.lha
/
QLsource
/
ROMsrc
/
SYS
/
PROCS9_asm
< prev
next >
Wrap
Text File
|
1995-08-27
|
8KB
|
441 lines
*/beginfile PROCS9_asm
; --------------------------------------------------------------
; PROCS9_asm - BASIC bits
; - last modified 27/08/95
; QDOS-Amiga sources by Rainer Kowallik
; ...some changes by Mark J Swift
; --------------------------------------------------------------
; get parameter
; entry of variables name
L069AE:
CMPA.L A5,A3
BGE.S L06994
MOVE.L A5,-(A7)
ADDQ.W #8,A3
MOVEA.L A3,A5
JSR L064A2(PC) ;*/undomodify BSR L064A2
MOVEA.L (A7)+,A5
BEQ.S L0698E
ADDQ.W #4,A7
RTS
L069C4 ; open channel for BASIC
BSR.S L069AE
MOVEQ #IO.OPEN,D0
MOVEQ #-1,D1 ; Job ID
MOVE.L D4,D3
L069CC MOVEA.L A1,A0
MOVE.W 0(A6,A1.L),-(A7)
TRAP #4
TRAP #2
MOVEQ #3,D3
ADD.W (A7)+,D3
BCLR #0,D3
ADD.L D3,BV_RIP(A6) ;arithmetic stack
TST.L D0
RTS
BAS_DELEte:
BSR.S L069AE
MOVEQ #$04,D0
BRA.S L069CC
BAS_DIR:
JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L0698E
MOVEA.L A0,A4
MOVEQ #$04,D4
BSR.S L069C4
BNE.S L0698E
MOVEA.L A0,A5
MOVEQ #$45,D0
MOVEA.L (A6),A1
MOVEA.L A5,A0
BSR.S TRAP_4_3
BNE.S L06986
MOVE.L D1,-(A7)
MOVEA.L (A6),A1
MOVEQ #$0A,D2
BSR.S L06A6A
MOVEQ #IO.SBYTE,D0 ;send a byte
MOVEQ #$0A,D1 ; Send <LF>
TRAP #3
MOVEM.W (A7)+,D1-D2
BSR.S L06A40
L06A1A MOVEQ #$03,D0
MOVEQ #$40,D2
MOVEA.L (A6),A1
MOVEA.L A5,A0
MOVEQ #0,D4
BSR TRAP_4_3
BNE L06988
SUBA.W #$0030,A1
MOVE.W -$02(A6,A1.L),D2
BEQ.S L06A1A
BSR.S L06A6A
MOVEQ #IO.SBYTE,D0 ;send a byte
MOVEQ #$A,D1 ; send <LF>
TRAP #3
BRA.S L06A1A
L06A40 ; add number of sectors
MOVE.W D2,D4
BSR.S L06A5A
MOVEQ #IO.SBYTE,D0 ;send a byte
MOVE.B #$2F,D1 ; send '/'
TRAP #3
MOVE.W D4,D1
BSR.S L06A5A
MOVEQ #-$17,D0
JSR UT_ERR(PC) ;*/undomodify BSR UT_ERR
MOVEQ #0,D0
RTS
L06A5A ; add entire number
MOVEA.L (A6),A1
LEA 2(A1),A0
MOVE.W D1,0(A6,A1.L)
JSR CN_ITOD(PC) ;*/undomodify BSR CN_ITOD
MOVE.W D1,D2
L06A6A MOVEQ #7,D0
MOVEA.L A4,A0
MOVEQ #-1,D3
BRA TRAP_4_3
BAS_FORMat:
JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE L0698E
MOVEA.L A0,A4
BSR L069AE
MOVEQ #$03,D0
BSR L069CC
BNE L0698E
BRA.S L06A40
COPY:
MOVEQ #0,D5
BRA.S L06A94
COPY_N:
MOVEQ #-$01,D5
L06A94 MOVEQ #$01,D4
BSR L069C4
BNE L0698E
MOVEA.L A0,A4
MOVEQ #2,D4
BSR L069C4
BNE.S L06B20
TST.B D5
BNE.S L06ACA
MOVEQ #-1,D5
MOVEA.L (A6),A1
MOVEQ #$47,D0
MOVEQ #$0E,D2
EXG A0,A4
BSR TRAP_4_3
EXG A0,A4
BNE.S L06ACA
MOVEA.L (A6),A1
MOVE.L 0(A6,A1.L),D5
MOVEQ #$46,D0
BSR TRAP_4_3
L06ACA MOVEA.L (A6),A1
MOVE.L BV_TKBAS(A6),D2 ;token list
SUB.L A1,D2
MOVEQ #0,D3
EXG A0,A4
TST.L D5
BLE.S L06AE0
CMP.L D5,D2
BLE.S L06AE0
MOVE.L D5,D2
; --------------------------------------------------------------
*/beginoverlay
ifd NoTas
L06AE0:
BSET #7,BV_BRK(A6) ;*/mend TAS $8F(A6)
; There has been a
; break (0) or not ($80)
BEQ.S L06B1E
MOVEQ #IO.FSTRG,D0 ;Fetch string of bytes
TRAP #4
TRAP #3
ADDQ.L #1,D0 ;*/insert
SUBQ.L #1,D0 ;*/modify CMPI.L #-1,D0
BCC.S L06AFA ;*/modify BNE.S L06AFA
; not complete error?
TST.W D1
BEQ.S L06AE0
BRA.S L06B0C
endc
ifnd NoTas
L06AE0:
TAS $8F(A6)
BEQ.S L06B1E
MOVEQ #IO.FSTRG,D0
TRAP #4
TRAP #3
CMPI.L #-1,D0
BNE.S L06AFA
TST.W D1
BEQ.S L06AE0
BRA.S L06B0C
endc
*/endoverlay
; --------------------------------------------------------------
L06AFA:
CMPI.L #-10,D0 ; end of file error
BNE.S L06B08
MOVEQ #0,D0
TST.W D1
BEQ.S L06B1E
L06B08 TST.L D0
BNE.S L06B1E
L06B0C MOVEQ #7,D0
MOVE.W D1,D2
EXG A0,A4
SUBA.W D1,A1
BSR TRAP_4_3
BNE.S L06B1E
SUB.L D2,D5
BNE.S L06ACA
L06B1E BSR.S L06B22
L06B20 EXG A0,A4
L06B22 BRA L06986
BAS_CLOSe:
CMPA.L A3,A5
BLE.S L06B44
TST.B $01(A6,A3.L)
BPL.S L06B44
JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L06B42
MOVE.L #$FFFFFFFF,0(A6,A2.L)
MOVEQ #IO.CLOSE,D0
TRAP #2
L06B42 RTS
L06B44 MOVEQ #-15,D0 ; signal bad parameter error
BRA.S L06B42
BAS_OPEN:
MOVEQ #0,D4
BRA.S L06B52
OPEN_IN:
MOVEQ #1,D4
BRA.S L06B52
OPEN_NEW:
MOVEQ #2,D4
L06B52 BSR.S BAS_CLOSe
TST.L D0
BEQ.S L06B5E
MOVEQ #-6,D2
CMP.L D0,D2
BNE.S L06B42
L06B5E EXG D1,D6
BSR L069C4
EXG D6,D1
BNE.S L06B42
JMP STO_CHID(PC) ;*/undomodify BRA STO_CHID
; store channel ID
BAS_SAVE:
MOVE.L A3,$00B4(A6) ; Temporary pointer for
; GO_PROC
MOVEQ #$02,D4
BSR L069C4
BNE.S L06B42
JSR L07484(PC) ;*/undomodify BSR L07484
BEQ.S L06B22
MOVE.L D0,D4
BSR L0699A
BRA L0698C
BAS_FILL:
JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L06BA4
JSR GET_INT4(PC) ;*/undomodify BSR GET_INT4
BNE.S L06BA4
MOVE.L 0(A6,A1.L),D1
ADDQ.L #4,A1
MOVE.L A1,BV_RIP(A6) ;arithmetic stack
MOVEQ #SD.FLOOD,D0 ;turns area flood on & off
MOVEQ #-1,D3 ; timeout
TRAP #3
L06BA4 RTS
BAS_UNDEr:
MOVE.B #$2B,D4
BRA.S L06BB0
BAS_FLASh:
MOVE.B #$2A,D4
L06BB0 JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L06BC0
JSR L08028(PC) ;*/undomodify BSR L08028
BNE.S L06BC0
L06BBC JMP L07FC4(PC) ;*/undomodify BRA L07FC4
L06BC0 RTS
BAS_OVER:
JSR L08038(PC) ;*/undomodify BSR L08038
BNE.S L06BC0
MOVE.B #$2C,D4
MOVE.W 0(A6,A1.L),D1
CMPI.W #$0001,D1
BGT.S L06BDC
CMPI.W #$FFFF,D1
BGE.S L06BBC
L06BDC MOVEQ #-15,D0 ; bad parameter
RTS
L06BE0 BSR L06CB6
JSR CA_GTFP(PC) ;*/undomodify BSR CA_GTFP
BNE.S L06BF2
MOVEQ #$36,D0 ; SD.GCUR sets the graphics
; cursor position
MOVEQ #-1,D3
TRAP #4
TRAP #3
L06BF2 BRA L06CAE
BAS_SCALe:
MOVEQ #$34,D4
BSR L06CB6
BSR L06D42
BSR L06D46
BRA L06C96
POINT:
MOVEQ #$30,D4
BRA.S L06C10
POINT_R:
MOVE.W #$00B0,D4
L06C10 BSR L06CB6
BSR L06D1C
BRA.S L06C96
BAS_LINE:
MOVEQ #$31,D4
BRA.S L06C22
LINE_R:
MOVE.W #$00B1,D4
L06C22 BSR L06CB6
BSR L06D0A
BNE.S L06CA4
BSR L06D1C
BRA.S L06C96
CIRCLE:
ELLIPSE:
MOVEQ #$33,D4
BRA.S L06C3A
CIRCLE_R:
ELLIPSE_R:
MOVE.W #$00B3,D4
L06C3A BSR.S L06CB6
BSR L06D1C
BSR L06D46
CMPI.B #$01,D5
BNE.S L06C50
BSR L06D42
BRA.S L06C68
L06C50 SUBQ.L #8,A1
SUBQ.L #4,A1
CLR.L 0(A6,A1.L)
MOVE.L #$00000801,$04(A6,A1.L) ; floating point 0.5
MOVE.L #$40000000,$08(A6,A1.L)
L06C68 MOVEM.W $06(A6,A1.L),D0-D2
MOVE.W $0C(A6,A1.L),$06(A6,A1.L)
MOVE.L $0E(A6,A1.L),$08(A6,A1.L)
MOVEM.W D0-D2,$0C(A6,A1.L)
BRA.S L06C96
BAS_ARC:
MOVEQ #$32,D4 ; SD.ARC plots an arc
BRA.S L06C8A
BAS_ARC_r:
MOVE.W #$B2,D4 ; SD.ARC || 128
L06C8A BSR.S L06CB6
BSR.S L06D0A
BSR L06D1C
BSR L06D46
L06C96 MOVE.L D4,D0
SWAP D0
BCLR #7,D0
MOVEQ #-1,D3
TRAP #4
TRAP #3
L06CA4 CMPA.L D6,A3
BGE.S L06CAC
MOVE.L A4,-(A7)
MOVE.W D5,D4
L06CAC MOVEQ #0,D0
L06CAE MOVE.L D7,BV_RIP(A6) ;arith stack
MOVEA.L D7,A1
RTS
L06CB6 ; execution of graphic commands
SWAP D4
CLR.W D4
CLR.W D5
MOVE.L BV_RIP(A6),D7 ;arith stack
MOVE.L A5,D6
CMPA.L D6,A3
BLT.S L06CCA
MOVEQ #-$0F,D0
BRA.S L06D06
L06CCA MOVE.B 1(A6,A3.L),D0
ANDI.B #$0F,D0
BNE.S L06CDC
JSR L07452(PC) ;*/undomodify BSR L07452
MOVE.W D5,D4
BRA.S L06CEE
L06CDC BTST #$07,$01(A6,A3.L)
BEQ.S L06CEE
MOVE.B $01(A6,A3.L),D4
BCLR #$07,D4
LSR.B #4,D4
L06CEE JSR CHNRTOID(PC) ;*/undomodify BSR CHNRTOID
BNE.S L06D06
MOVE.W #$0100,D1
JSR BV_CHRIX(PC) ;*/undomodify BSR BV_CHRIX
MOVE.L BV_RIP(A6),D7 ;arith stack
MOVEA.L D7,A1
MOVEA.L (A7),A4
RTS
L06D06 ADDQ.L #4,A7
BRA.S L06CAE
L06D0A CMPI.B #$05,D4
BNE.S L06D1C
BSR.S L06D6E
BSR.S L06D7E
MOVE.L A1,BV_RIP(A6) ;arith stack
MOVEQ #0,D0
RTS
L06D1C BSR.S L06D4C
BNE.S L06D06
BTST #$17,D4
BEQ.S L06D2C
BSR.S L06D6E
JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
L06D2C BSR.S L06D4C
BNE.S L06D06
BTST #$17,D4
BEQ.S L06D3C
BSR.S L06D7E
JSR RI_ADD(PC) ;*/undomodify BSR RI_ADD
L06D3C BSR.S L06D8E
MOVEQ #1,D0
RTS
L06D42 BSR.S L06D4C
BNE.S L06D06
L06D46 BSR.S L06D4C
BNE.S L06D06
RTS
L06D4C MOVE.L A4,-(A7)
CMPA.L D6,A3
BLT.S L06D56
MOVEQ #-15,D0 ; Bad parameter
BRA.S L06D6A
L06D56 MOVE.W D5,D4
JSR L07452(PC) ;*/undomodify BSR L07452
MOVEA.L A3,A5
JSR L05EC8(PC) ;*/undomodify BSR L05EC8
BNE.S L06D6A
MOVEQ #$02,D0
JSR L05996(PC) ;*/undomodify BSR L05996
L06D6A MOVEA.L (A7)+,A4
RTS
L06D6E SUBQ.W #6,A1
MOVE.L $0A(A6,A2.L),0(A6,A1.L)
MOVE.W $0E(A6,A2.L),$04(A6,A1.L)
RTS
L06D7E SUBQ.W #6,A1
MOVE.L $04(A6,A2.L),0(A6,A1.L)
MOVE.W $08(A6,A2.L),$04(A6,A1.L)
RTS
L06D8E MOVE.L 0(A6,A1.L),$04(A6,A2.L)
MOVE.L $04(A6,A1.L),$08(A6,A2.L)
MOVE.L $08(A6,A1.L),$0C(A6,A2.L)
RTS
; --------------------------------------------------------------
;*/endfile